home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / if_hippi.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  4KB  |  158 lines

  1. /*
  2.  * INET        An implementation of the TCP/IP protocol suite for the LINUX
  3.  *        operating system.  INET is implemented using the  BSD Socket
  4.  *        interface as the means of communication with the user level.
  5.  *
  6.  *        Global definitions for the HIPPI interface.
  7.  *
  8.  * Version:    @(#)if_hippi.h    1.0.0    05/26/97
  9.  *
  10.  * Author:    Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
  11.  *        Donald Becker, <becker@super.org>
  12.  *        Alan Cox, <alan@redhat.com>
  13.  *        Steve Whitehouse, <gw7rrm@eeshack3.swan.ac.uk>
  14.  *        Jes Sorensen, <Jes.Sorensen@cern.ch>
  15.  *
  16.  *        This program is free software; you can redistribute it and/or
  17.  *        modify it under the terms of the GNU General Public License
  18.  *        as published by the Free Software Foundation; either version
  19.  *        2 of the License, or (at your option) any later version.
  20.  */
  21.  
  22. #ifndef _LINUX_IF_HIPPI_H
  23. #define _LINUX_IF_HIPPI_H
  24.  
  25. #include <asm/byteorder.h>
  26.  
  27. /*
  28.  *    HIPPI magic constants.
  29.  */
  30.  
  31. #define HIPPI_ALEN    6        /* Bytes in one HIPPI hw-addr       */
  32. #define HIPPI_HLEN    sizeof(struct hippi_hdr)
  33. #define HIPPI_ZLEN    0        /* Min. bytes in frame without FCS */
  34. #define HIPPI_DATA_LEN    65280        /* Max. bytes in payload       */
  35. #define HIPPI_FRAME_LEN    (HIPPI_DATA_LEN + HIPPI_HLEN)
  36.                     /* Max. bytes in frame without FCS */
  37.  
  38. /*
  39.  * Define LLC and SNAP constants.
  40.  */
  41. #define HIPPI_EXTENDED_SAP    0xAA
  42. #define HIPPI_UI_CMD        0x03
  43.  
  44.  
  45. /*
  46.  *    Do we need to list some sort of ID's here?
  47.  */
  48.  
  49. /*
  50.  *    HIPPI statistics collection data. 
  51.  */
  52.  
  53. struct hipnet_statistics
  54. {
  55.     int    rx_packets;        /* total packets received    */
  56.     int    tx_packets;        /* total packets transmitted    */
  57.     int    rx_errors;        /* bad packets received        */
  58.     int    tx_errors;        /* packet transmit problems    */
  59.     int    rx_dropped;        /* no space in linux buffers    */
  60.     int    tx_dropped;        /* no space available in linux    */
  61.  
  62.     /* detailed rx_errors: */
  63.     int    rx_length_errors;
  64.     int    rx_over_errors;        /* receiver ring buff overflow    */
  65.     int    rx_crc_errors;        /* recved pkt with crc error    */
  66.     int    rx_frame_errors;    /* recv'd frame alignment error */
  67.     int    rx_fifo_errors;        /* recv'r fifo overrun        */
  68.     int    rx_missed_errors;    /* receiver missed packet    */
  69.  
  70.     /* detailed tx_errors */
  71.     int    tx_aborted_errors;
  72.     int    tx_carrier_errors;
  73.     int    tx_fifo_errors;
  74.     int    tx_heartbeat_errors;
  75.     int    tx_window_errors;
  76. };
  77.  
  78.  
  79. struct hippi_fp_hdr
  80. {
  81. #if 0
  82.     __u8        ulp;                /* must contain 4 */
  83. #if defined (__BIG_ENDIAN_BITFIELD)
  84.     __u8        d1_data_present:1;        /* must be 1 */
  85.     __u8        start_d2_burst_boundary:1;    /* must be zero */
  86.     __u8        reserved:6;            /* must be zero */
  87. #if 0
  88.     __u16        reserved1:5;
  89.     __u16        d1_area_size:8;            /* must be 3 */
  90.     __u16        d2_offset:3;            /* must be zero */
  91. #endif
  92. #elif defined(__LITTLE_ENDIAN_BITFIELD)
  93.     __u8        reserved:6;            /* must be zero */
  94.     __u8         start_d2_burst_boundary:1;    /* must be zero */
  95.     __u8        d1_data_present:1;        /* must be 1 */
  96. #if 0
  97.     __u16        d2_offset:3;            /* must be zero */
  98.     __u16        d1_area_size:8;            /* must be 3 */
  99.     __u16        reserved1:5;            /* must be zero */
  100. #endif
  101. #else
  102. #error    "Please fix <asm/byteorder.h>"
  103. #endif
  104. #else
  105.     __u32        fixed;
  106. #endif
  107.     __u32        d2_size;
  108. } __attribute__ ((packed));
  109.  
  110. struct hippi_le_hdr
  111. {
  112. #if defined (__BIG_ENDIAN_BITFIELD)
  113.     __u8        fc:3;
  114.     __u8        double_wide:1;
  115.     __u8        message_type:4;
  116. #elif defined(__LITTLE_ENDIAN_BITFIELD)
  117.     __u8        message_type:4;
  118.     __u8        double_wide:1;
  119.     __u8        fc:3;
  120. #endif
  121.     __u8        dest_switch_addr[3];
  122. #if defined (__BIG_ENDIAN_BITFIELD)
  123.     __u8        dest_addr_type:4,
  124.             src_addr_type:4;
  125. #elif defined(__LITTLE_ENDIAN_BITFIELD)
  126.     __u8        src_addr_type:4,
  127.             dest_addr_type:4;
  128. #endif
  129.     __u8        src_switch_addr[3];
  130.     __u16        reserved;
  131.     __u8        daddr[HIPPI_ALEN];
  132.     __u16        locally_administered;
  133.     __u8        saddr[HIPPI_ALEN];
  134. } __attribute__ ((packed));
  135.  
  136. #define HIPPI_OUI_LEN    3
  137. /*
  138.  * Looks like the dsap and ssap fields have been swapped by mistake in
  139.  * RFC 2067 "IP over HIPPI".
  140.  */
  141. struct hippi_snap_hdr
  142. {
  143.     __u8    dsap;            /* always 0xAA */
  144.     __u8    ssap;            /* always 0xAA */
  145.     __u8    ctrl;            /* always 0x03 */
  146.     __u8    oui[HIPPI_OUI_LEN];    /* organizational universal id (zero)*/
  147.     __u16    ethertype;        /* packet type ID field */
  148. } __attribute__ ((packed));
  149.  
  150. struct hippi_hdr
  151. {
  152.     struct hippi_fp_hdr    fp;
  153.     struct hippi_le_hdr    le;
  154.     struct hippi_snap_hdr    snap;
  155. } __attribute__ ((packed));
  156.  
  157. #endif    /* _LINUX_IF_HIPPI_H */
  158.